前言
OpenClaw 是一个开源的 AI 助手框架,支持多渠道接入(Telegram、飞书、Discord 等)。本文将介绍如何在 Docker 中部署 OpenClaw,并配置 GitHub 自动备份记忆文件,实现数据的持久化存储。
为什么需要持久化记忆?
AI 助手每次会话都是”无状态”的,重启后会丢失之前的对话上下文。通过 Git 自动备份,可以:
- ✅ 保存长期记忆(用户偏好、项目上下文、重要决策)
- ✅ 跨会话恢复上下文
- ✅ 版本控制,可追溯历史变更
- ✅ 多设备/多实例共享记忆
环境准备
前置条件
- Docker 和 Docker Compose
- GitHub 账号
- SSH 密钥(用于 Git 推送)
创建 GitHub 仓库
1 2 3
|
git clone git@github.com:your-username/openClawRemember.git
|
Docker 部署 OpenClaw
1. 目录结构
1 2 3 4
| openclaw-docker/ ├── docker-compose.yml ├── .env └── workspace/
|
2. docker-compose.yml 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| version: '3.8'
services: openclaw: image: openclaw/openclaw:latest container_name: openclaw restart: unless-stopped volumes: - ./workspace:/home/node/.openclaw/workspace - ~/.ssh:/home/node/.ssh:ro environment: - OPENCLAW_CONFIG=/home/node/.openclaw/workspace/config.json - TZ=Asia/Shanghai network_mode: host
|
3. 配置 SSH 密钥
1 2 3 4 5 6 7 8 9
| ssh-keygen -t ed25519 -C "openclaw-backup"
cat ~/.ssh/id_ed25519.pub
ssh -T git@github.com
|
配置自动备份
1. 初始化 Git 仓库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| cd /path/to/workspace
git init git remote add origin git@github.com:your-username/openClawRemember.git
cat > .gitignore << EOF # 敏感信息 *.key *.secret config.json
# 临时文件 *.log tmp/ EOF
git add . git commit -m "Initial commit: OpenClaw workspace" git push -u origin master
|
2. 自动备份脚本
创建 backup.sh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/bin/bash
WORKSPACE_DIR="/home/node/.openclaw/workspace" LOG_FILE="/tmp/openclaw-backup.log"
cd "$WORKSPACE_DIR" || exit 1
if git diff --quiet && git diff --cached --quiet; then echo "$(date): No changes to backup" >> "$LOG_FILE" exit 0 fi
git add -A
git commit -m "Auto-backup: $(date '+%Y-%m-%d %H:%M')"
if git push origin master 2>/dev/null; then echo "$(date): Backup completed and pushed" >> "$LOG_FILE" else echo "$(date): Backup committed, push failed (auth issue?)" >> "$LOG_FILE" fi
|
3. 配置定时任务
在宿主机上配置 cron:
1 2 3 4
| crontab -e
0 */2 * * * /path/to/workspace/backup.sh
|
或者在 Docker 内配置(需要安装 cron):
1 2 3 4 5 6 7 8 9 10 11
| docker exec -it openclaw bash
apk add --no-cache cronie
echo "0 */2 * * * /home/node/.openclaw/workspace/backup.sh" | crontab -
crond -f &
|
记忆文件说明
OpenClaw 的记忆文件位于 workspace/ 目录:
1 2 3 4 5 6 7 8 9 10
| workspace/ ├── MEMORY.md ├── USER.md ├── SOUL.md ├── AGENTS.md ├── TOOLS.md ├── HEARTBEAT.md └── memory/ ├── 2026-03-13.md └── ...
|
MEMORY.md 示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| # MEMORY.md - Long-term Memory
_Last updated: 2026-03-13_
## 👤 About the User
- **职业**:程序员 - **所在地**:深圳 - **偏好**:时间自由、SaaS 模式
## 📅 Key Decisions
### 2026-03-13 - ✅ 配置了 Docker 部署 - ✅ 配置了 GitHub 自动备份 - ✅ 设置了每 2 小时同步一次
## 📝 Todo
- [ ] 测试自动备份是否正常工作 - [ ] 配置多渠道接入
|
验证备份
手动触发备份
1 2 3 4 5 6 7 8
| docker exec -it openclaw bash
/home/node/.openclaw/workspace/backup.sh
cat /tmp/openclaw-backup.log
|
检查 GitHub 仓库
1 2 3 4 5
| git log --oneline
git status
|
故障排查
1. Git 推送失败
1 2 3 4 5 6 7 8 9 10
| ssh -T git@github.com
chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pub
git config --global user.email "your-email@example.com" git config --global user.name "Your Name"
|
2. 容器重启后记忆丢失
确保 volume 挂载正确:
1 2 3 4 5
| docker inspect openclaw | grep -A 10 Mounts
ls -la /path/to/workspace/
|
3. 备份脚本不执行
1 2 3 4 5 6 7 8
| service cron status
grep CRON /var/log/syslog
bash /path/to/workspace/backup.sh
|
最佳实践
1. 敏感信息管理
- ❌ 不要将
config.json、API 密钥提交到 Git
- ✅ 使用环境变量或本地配置文件
- ✅ 在
.gitignore 中排除敏感文件
2. 备份频率
- 高频变更:每小时备份
- 一般使用:每 2-4 小时备份
- 低频使用:每天备份一次
3. 记忆维护
- 定期清理过期的每日记忆文件
- 将重要信息从
memory/YYYY-MM-DD.md 迁移到 MEMORY.md
- 保持
MEMORY.md 简洁,只保留关键上下文
总结
通过 Docker 部署 + GitHub 自动备份,我们实现了:
- ✅ OpenClaw 的容器化部署,易于管理和迁移
- ✅ 记忆文件自动同步到 GitHub,防止数据丢失
- ✅ 版本控制,可追溯历史变更
- ✅ 支持多实例共享同一份记忆
接下来你可以:
- 配置多渠道接入(Telegram、飞书等)
- 自定义 AI 助手的人设和行为
- 扩展自动备份功能(如备份到多个仓库)
参考链接